package mao.mashibing.juc.jucutil;

import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

/*
user：mao
data：2020/11/22
explain：信号量学习，其实信号量就是一只系统资源，
        需要资源的线程获取资源，使用资源完毕，再释放资源据可以了。
*/
public class TestSemaphore {
    static Semaphore semaphore = new Semaphore(10);
    public static void main(String[] args) {
        Runnable runnable = ()->{
            try {
                //这个变量是如何获取的？
                semaphore.acquire();
                TimeUnit.SECONDS.sleep(1);
                System.out.println(Thread.currentThread().getName());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }finally {
                semaphore.release();
            }
        };
        for (int i = 0; i < 100; i++) {
            new Thread(runnable).start();
        }
    }

}
